<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>ArNetworking: ArServerHandlerCommMonitor Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">ArNetworking
   &#160;<span id="projectnumber">dev20180125</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classArServerHandlerCommMonitor.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#pro-static-attribs">Static Protected Attributes</a> &#124;
<a href="classArServerHandlerCommMonitor-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ArServerHandlerCommMonitor Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Handler that enables the client to monitor communication to the robot server.  
 <a href="classArServerHandlerCommMonitor.html#details">More...</a></p>

<p><code>#include &lt;ArServerHandlerCommMonitor.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:af665f126df849ea488e741fa3e21a02c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="classArServerHandlerCommMonitor.html#af665f126df849ea488e741fa3e21a02caaac450a7bfaf45350cfd519b5cbb316b">MIN_HEARTBEAT_INTERVAL</a> = 100, 
<a class="el" href="classArServerHandlerCommMonitor.html#af665f126df849ea488e741fa3e21a02ca8786dd9a908afcdfc6dfc75e97076244">DEFAULT_HEARTBEAT_INTERVAL</a> = 500
 }</td></tr>
<tr class="separator:af665f126df849ea488e741fa3e21a02c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a4552a255904740d8b3fd9cb04ef075b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a4552a255904740d8b3fd9cb04ef075b1">ArServerHandlerCommMonitor</a> (<a class="el" href="classArServerBase.html">ArServerBase</a> *server, int heartbeatInterval=<a class="el" href="classArServerHandlerCommMonitor.html#af665f126df849ea488e741fa3e21a02ca8786dd9a908afcdfc6dfc75e97076244">DEFAULT_HEARTBEAT_INTERVAL</a>)</td></tr>
<tr class="memdesc:a4552a255904740d8b3fd9cb04ef075b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new handler to monitor communication between the robot server and client.  <a href="#a4552a255904740d8b3fd9cb04ef075b1">More...</a><br /></td></tr>
<tr class="separator:a4552a255904740d8b3fd9cb04ef075b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43e31a53641f6f94f99cf52e6abbe709"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a43e31a53641f6f94f99cf52e6abbe709">cycleCallback</a> ()</td></tr>
<tr class="memdesc:a43e31a53641f6f94f99cf52e6abbe709"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback for the server cycle; broadcasts heartbeat packets when interval has elapsed.  <a href="#a43e31a53641f6f94f99cf52e6abbe709">More...</a><br /></td></tr>
<tr class="separator:a43e31a53641f6f94f99cf52e6abbe709"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa88c1f9398c7f4c0a2cb812e7bc85669"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#aa88c1f9398c7f4c0a2cb812e7bc85669">handleAckCommTcp</a> (<a class="el" href="classArServerClient.html">ArServerClient</a> *<a class="el" href="configClientToServer_8cpp.html#afe594bfb305907ae82f259409cc214cb">client</a>, <a class="el" href="classArNetPacket.html">ArNetPacket</a> *packet)</td></tr>
<tr class="memdesc:aa88c1f9398c7f4c0a2cb812e7bc85669"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles the ackCommTcp network packet.  <a href="#aa88c1f9398c7f4c0a2cb812e7bc85669">More...</a><br /></td></tr>
<tr class="separator:aa88c1f9398c7f4c0a2cb812e7bc85669"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ab611ab97a9b28aab3dc2dddcb94b65"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a4ab611ab97a9b28aab3dc2dddcb94b65">handleAckCommUdp</a> (<a class="el" href="classArServerClient.html">ArServerClient</a> *<a class="el" href="configClientToServer_8cpp.html#afe594bfb305907ae82f259409cc214cb">client</a>, <a class="el" href="classArNetPacket.html">ArNetPacket</a> *packet)</td></tr>
<tr class="memdesc:a4ab611ab97a9b28aab3dc2dddcb94b65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles the ackCommUdp network packet.  <a href="#a4ab611ab97a9b28aab3dc2dddcb94b65">More...</a><br /></td></tr>
<tr class="separator:a4ab611ab97a9b28aab3dc2dddcb94b65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a599f291d5f0dd0dc601fbbff48068d4a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a599f291d5f0dd0dc601fbbff48068d4a">handleGetHeartbeatInterval</a> (<a class="el" href="classArServerClient.html">ArServerClient</a> *<a class="el" href="configClientToServer_8cpp.html#afe594bfb305907ae82f259409cc214cb">client</a>, <a class="el" href="classArNetPacket.html">ArNetPacket</a> *packet)</td></tr>
<tr class="memdesc:a599f291d5f0dd0dc601fbbff48068d4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles the getHeartbeatInterval network packet.  <a href="#a599f291d5f0dd0dc601fbbff48068d4a">More...</a><br /></td></tr>
<tr class="separator:a599f291d5f0dd0dc601fbbff48068d4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b86b8c47e7c643c61473fbb77ba8195"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a3b86b8c47e7c643c61473fbb77ba8195">~ArServerHandlerCommMonitor</a> ()</td></tr>
<tr class="memdesc:a3b86b8c47e7c643c61473fbb77ba8195"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="#a3b86b8c47e7c643c61473fbb77ba8195">More...</a><br /></td></tr>
<tr class="separator:a3b86b8c47e7c643c61473fbb77ba8195"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a6beff4bcf7780db743bd5020b2c1b013"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArFunctor2C.html">ArFunctor2C</a>&lt; <a class="el" href="classArServerHandlerCommMonitor.html">ArServerHandlerCommMonitor</a>, <a class="el" href="classArServerClient.html">ArServerClient</a> *, <a class="el" href="classArNetPacket.html">ArNetPacket</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a6beff4bcf7780db743bd5020b2c1b013">myAckCommTcpCB</a></td></tr>
<tr class="memdesc:a6beff4bcf7780db743bd5020b2c1b013"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback for replying to the ack request (TCP)  <a href="#a6beff4bcf7780db743bd5020b2c1b013">More...</a><br /></td></tr>
<tr class="separator:a6beff4bcf7780db743bd5020b2c1b013"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46b8ce13306d01eed1dc2653f5dd8017"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArFunctor2C.html">ArFunctor2C</a>&lt; <a class="el" href="classArServerHandlerCommMonitor.html">ArServerHandlerCommMonitor</a>, <a class="el" href="classArServerClient.html">ArServerClient</a> *, <a class="el" href="classArNetPacket.html">ArNetPacket</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a46b8ce13306d01eed1dc2653f5dd8017">myAckCommUdpCB</a></td></tr>
<tr class="memdesc:a46b8ce13306d01eed1dc2653f5dd8017"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback for replying to the ack request (UDP)  <a href="#a46b8ce13306d01eed1dc2653f5dd8017">More...</a><br /></td></tr>
<tr class="separator:a46b8ce13306d01eed1dc2653f5dd8017"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4029b7f7a9026e3f5b319aa7869e86a1"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArFunctorC.html">ArFunctorC</a>&lt; <a class="el" href="classArServerHandlerCommMonitor.html">ArServerHandlerCommMonitor</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a4029b7f7a9026e3f5b319aa7869e86a1">myCycleCB</a></td></tr>
<tr class="memdesc:a4029b7f7a9026e3f5b319aa7869e86a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cycle callback executed to broadcast the heartbeat packets.  <a href="#a4029b7f7a9026e3f5b319aa7869e86a1">More...</a><br /></td></tr>
<tr class="separator:a4029b7f7a9026e3f5b319aa7869e86a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb3801b68504caec991fc981970844c8"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArFunctor2C.html">ArFunctor2C</a>&lt; <a class="el" href="classArServerHandlerCommMonitor.html">ArServerHandlerCommMonitor</a>, <a class="el" href="classArServerClient.html">ArServerClient</a> *, <a class="el" href="classArNetPacket.html">ArNetPacket</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#afb3801b68504caec991fc981970844c8">myGetHeartbeatIntervalCB</a></td></tr>
<tr class="memdesc:afb3801b68504caec991fc981970844c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback for getting the heartbeat interval.  <a href="#afb3801b68504caec991fc981970844c8">More...</a><br /></td></tr>
<tr class="separator:afb3801b68504caec991fc981970844c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a240bd298bab57805609167225b25174c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a240bd298bab57805609167225b25174c">myHeartbeatInterval</a></td></tr>
<tr class="memdesc:a240bd298bab57805609167225b25174c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of msecs between heartbeat broadcasts.  <a href="#a240bd298bab57805609167225b25174c">More...</a><br /></td></tr>
<tr class="separator:a240bd298bab57805609167225b25174c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adee9f703049b6d1c871baadedb28889e"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArTime.html">ArTime</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#adee9f703049b6d1c871baadedb28889e">myLastHeartbeatTime</a></td></tr>
<tr class="memdesc:adee9f703049b6d1c871baadedb28889e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Time that the last heartbeat packets were broadcast.  <a href="#adee9f703049b6d1c871baadedb28889e">More...</a><br /></td></tr>
<tr class="separator:adee9f703049b6d1c871baadedb28889e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0478c31de1b026b3d6ee35a241b208f2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classArServerBase.html">ArServerBase</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a0478c31de1b026b3d6ee35a241b208f2">myServer</a></td></tr>
<tr class="memdesc:a0478c31de1b026b3d6ee35a241b208f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Server from which requests are received.  <a href="#a0478c31de1b026b3d6ee35a241b208f2">More...</a><br /></td></tr>
<tr class="separator:a0478c31de1b026b3d6ee35a241b208f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
Static Protected Attributes</h2></td></tr>
<tr class="memitem:a71cbafdc26f4f2aa6a60932e6f84c70f"><td class="memItemLeft" align="right" valign="top">static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a71cbafdc26f4f2aa6a60932e6f84c70f">ACK_COMM_TCP_PACKET_NAME</a> = &quot;ackCommTcp&quot;</td></tr>
<tr class="memdesc:a71cbafdc26f4f2aa6a60932e6f84c70f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the network packet to confirm TCP communication.  <a href="#a71cbafdc26f4f2aa6a60932e6f84c70f">More...</a><br /></td></tr>
<tr class="separator:a71cbafdc26f4f2aa6a60932e6f84c70f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90e5e7e81cb15c1865e45a18be63bd04"><td class="memItemLeft" align="right" valign="top">static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a90e5e7e81cb15c1865e45a18be63bd04">ACK_COMM_UDP_PACKET_NAME</a> = &quot;ackCommUdp&quot;</td></tr>
<tr class="memdesc:a90e5e7e81cb15c1865e45a18be63bd04"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the network packet to confirm UDP communication.  <a href="#a90e5e7e81cb15c1865e45a18be63bd04">More...</a><br /></td></tr>
<tr class="separator:a90e5e7e81cb15c1865e45a18be63bd04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01a22834319c6a835c0153e6d029a98d"><td class="memItemLeft" align="right" valign="top">static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a01a22834319c6a835c0153e6d029a98d">COMMAND_GROUP</a> = &quot;RobotInfo&quot;</td></tr>
<tr class="separator:a01a22834319c6a835c0153e6d029a98d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa72731c9cdcf23d92976e16ecdb0e750"><td class="memItemLeft" align="right" valign="top">static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#aa72731c9cdcf23d92976e16ecdb0e750">GET_HEARTBEAT_INTERVAL_PACKET_NAME</a> = &quot;getHeartbeatInterval&quot;</td></tr>
<tr class="memdesc:aa72731c9cdcf23d92976e16ecdb0e750"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the network packet to get the heartbeat interval.  <a href="#aa72731c9cdcf23d92976e16ecdb0e750">More...</a><br /></td></tr>
<tr class="separator:aa72731c9cdcf23d92976e16ecdb0e750"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeaef0a920c0ef6cac30f3b3cb12ee031"><td class="memItemLeft" align="right" valign="top">static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#aeaef0a920c0ef6cac30f3b3cb12ee031">HEARTBEAT_TCP_PACKET_NAME</a> = &quot;heartbeatTcp&quot;</td></tr>
<tr class="memdesc:aeaef0a920c0ef6cac30f3b3cb12ee031"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the network packet broadcast (TCP) to confirm the server is alive.  <a href="#aeaef0a920c0ef6cac30f3b3cb12ee031">More...</a><br /></td></tr>
<tr class="separator:aeaef0a920c0ef6cac30f3b3cb12ee031"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6948e2803dcdc4041018fc5569694003"><td class="memItemLeft" align="right" valign="top">static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a6948e2803dcdc4041018fc5569694003">HEARTBEAT_UDP_PACKET_NAME</a> = &quot;heartbeatUdp&quot;</td></tr>
<tr class="memdesc:a6948e2803dcdc4041018fc5569694003"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the network packet broadcast (UDP) to confirm the server is alive.  <a href="#a6948e2803dcdc4041018fc5569694003">More...</a><br /></td></tr>
<tr class="separator:a6948e2803dcdc4041018fc5569694003"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a901056b011a577e34656d75cf5bfdd3e"><td class="memItemLeft" align="right" valign="top">static const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArServerHandlerCommMonitor.html#a901056b011a577e34656d75cf5bfdd3e">NO_ARGS</a> = &quot;None&quot;</td></tr>
<tr class="separator:a901056b011a577e34656d75cf5bfdd3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Handler that enables the client to monitor communication to the robot server. </p>
<p><a class="el" href="classArServerHandlerCommMonitor.html" title="Handler that enables the client to monitor communication to the robot server. ">ArServerHandlerCommMonitor</a> defines network packet handlers that simply verify the communication between the robot and server.</p>
<p>This class sends the following broadcast messages to clients at regular intervals: </p><ul>
<li>
heartbeatTcp: Packet broadcast (TCP) periodically to confirm that the server is alive. </li>
<li>
heartbeatUdp: Packet broadcast (UDP) periodically to confirm that the server is alive. </li>
</ul>
<p>Clients should respond with the following: </p><ul>
<li>
ackCommTcp: Command to acknowledge two-way communication over TCP. An empty packet is returned. </li>
<li>
ackCommUdp: Command to acknowledge two-way communication over UDP. An empty packet is returned. </li>
</ul>
<p>Clients may send the following requests: </p><ul>
<li>
<p class="startli">getHeartbeatInterval: Command to return the expected heartbeat interval. Packet contains: </p><ol>
<li>
uByte4 : Interval (msecs) </li>
</ol>
<p class="endli"></p>
</li>
</ul>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="af665f126df849ea488e741fa3e21a02c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="af665f126df849ea488e741fa3e21a02caaac450a7bfaf45350cfd519b5cbb316b"></a>MIN_HEARTBEAT_INTERVAL&#160;</td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="af665f126df849ea488e741fa3e21a02ca8786dd9a908afcdfc6dfc75e97076244"></a>DEFAULT_HEARTBEAT_INTERVAL&#160;</td><td class="fielddoc">
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a4552a255904740d8b3fd9cb04ef075b1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ArServerHandlerCommMonitor::ArServerHandlerCommMonitor </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArServerBase.html">ArServerBase</a> *&#160;</td>
          <td class="paramname"><em>server</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>heartbeatInterval</em> = <code><a class="el" href="classArServerHandlerCommMonitor.html#af665f126df849ea488e741fa3e21a02ca8786dd9a908afcdfc6dfc75e97076244">DEFAULT_HEARTBEAT_INTERVAL</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructs a new handler to monitor communication between the robot server and client. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">server</td><td>the <a class="el" href="classArServerBase.html" title="Base server for all networking services. ">ArServerBase</a> used to send/receive requests </td></tr>
    <tr><td class="paramname">heartBeatInterval</td><td>How often to send a "heartbeat" packet to the client </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a3b86b8c47e7c643c61473fbb77ba8195"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ArServerHandlerCommMonitor::~ArServerHandlerCommMonitor </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Destructor. </p>

<p>References <a class="el" href="classArServerHandlerCommMonitor.html#a599f291d5f0dd0dc601fbbff48068d4a">handleGetHeartbeatInterval()</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a43e31a53641f6f94f99cf52e6abbe709"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArServerHandlerCommMonitor::cycleCallback </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Callback for the server cycle; broadcasts heartbeat packets when interval has elapsed. </p>

<p>References <a class="el" href="classArServerBase.html#aaf43c74fa075d30ec57eb1ac4221084c">ArServerBase::broadcastPacketTcp()</a>, <a class="el" href="classArServerBase.html#ad1bb0c25a5dc4f2b99907a4f98e749da">ArServerBase::broadcastPacketUdp()</a>, <a class="el" href="classArServerHandlerCommMonitor.html#aeaef0a920c0ef6cac30f3b3cb12ee031">HEARTBEAT_TCP_PACKET_NAME</a>, <a class="el" href="classArServerHandlerCommMonitor.html#a6948e2803dcdc4041018fc5569694003">HEARTBEAT_UDP_PACKET_NAME</a>, <a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/group__easy.html#gabfac503dbf12dac57c8dc133d0b034a1">ArTime::mSecSince()</a>, <a class="el" href="classArServerHandlerCommMonitor.html#a240bd298bab57805609167225b25174c">myHeartbeatInterval</a>, <a class="el" href="classArServerHandlerCommMonitor.html#adee9f703049b6d1c871baadedb28889e">myLastHeartbeatTime</a>, <a class="el" href="classArServerHandlerCommMonitor.html#a0478c31de1b026b3d6ee35a241b208f2">myServer</a>, and <a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/group__easy.html#ga7c269e161c8e7cb56bde73dea501a619">ArTime::setToNow()</a>.</p>

</div>
</div>
<a class="anchor" id="aa88c1f9398c7f4c0a2cb812e7bc85669"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArServerHandlerCommMonitor::handleAckCommTcp </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArServerClient.html">ArServerClient</a> *&#160;</td>
          <td class="paramname"><em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArNetPacket.html">ArNetPacket</a> *&#160;</td>
          <td class="paramname"><em>packet</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handles the ackCommTcp network packet. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">client</td><td>the <a class="el" href="classArServerClient.html" title="This class represents the server&#39;s connection to the client, and contains the socket that the server ...">ArServerClient</a> * that sent the request </td></tr>
    <tr><td class="paramname">packet</td><td>the <a class="el" href="classArNetPacket.html" title="our packet for the network stuff ">ArNetPacket</a> * that contains the request </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="classArServerClient.html#a3f898b500f25869bdc5098c7d9a94f93">ArServerClient::sendPacketTcp()</a>.</p>

</div>
</div>
<a class="anchor" id="a4ab611ab97a9b28aab3dc2dddcb94b65"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArServerHandlerCommMonitor::handleAckCommUdp </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArServerClient.html">ArServerClient</a> *&#160;</td>
          <td class="paramname"><em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArNetPacket.html">ArNetPacket</a> *&#160;</td>
          <td class="paramname"><em>packet</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handles the ackCommUdp network packet. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">client</td><td>the <a class="el" href="classArServerClient.html" title="This class represents the server&#39;s connection to the client, and contains the socket that the server ...">ArServerClient</a> * that sent the request </td></tr>
    <tr><td class="paramname">packet</td><td>the <a class="el" href="classArNetPacket.html" title="our packet for the network stuff ">ArNetPacket</a> * that contains the request </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="classArServerClient.html#a9276b1f38501725852c779058bad1d33">ArServerClient::sendPacketUdp()</a>.</p>

</div>
</div>
<a class="anchor" id="a599f291d5f0dd0dc601fbbff48068d4a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ArServerHandlerCommMonitor::handleGetHeartbeatInterval </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArServerClient.html">ArServerClient</a> *&#160;</td>
          <td class="paramname"><em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classArNetPacket.html">ArNetPacket</a> *&#160;</td>
          <td class="paramname"><em>packet</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Handles the getHeartbeatInterval network packet. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">client</td><td>the <a class="el" href="classArServerClient.html" title="This class represents the server&#39;s connection to the client, and contains the socket that the server ...">ArServerClient</a> * that sent the request </td></tr>
    <tr><td class="paramname">packet</td><td>the <a class="el" href="classArNetPacket.html" title="our packet for the network stuff ">ArNetPacket</a> * that contains the request </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="classArServerHandlerCommMonitor.html#a240bd298bab57805609167225b25174c">myHeartbeatInterval</a>, <a class="el" href="classArServerClient.html#a3f898b500f25869bdc5098c7d9a94f93">ArServerClient::sendPacketTcp()</a>, and <a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArBasePacket.html#abeb94fdd3729b05abb4574903887876c">ArBasePacket::uByte4ToBuf()</a>.</p>

<p>Referenced by <a class="el" href="classArServerHandlerCommMonitor.html#a3b86b8c47e7c643c61473fbb77ba8195">~ArServerHandlerCommMonitor()</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a71cbafdc26f4f2aa6a60932e6f84c70f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const char * ArServerHandlerCommMonitor::ACK_COMM_TCP_PACKET_NAME = &quot;ackCommTcp&quot;</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Name of the network packet to confirm TCP communication. </p>

</div>
</div>
<a class="anchor" id="a90e5e7e81cb15c1865e45a18be63bd04"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const char * ArServerHandlerCommMonitor::ACK_COMM_UDP_PACKET_NAME = &quot;ackCommUdp&quot;</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Name of the network packet to confirm UDP communication. </p>

</div>
</div>
<a class="anchor" id="a01a22834319c6a835c0153e6d029a98d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const char * ArServerHandlerCommMonitor::COMMAND_GROUP = &quot;RobotInfo&quot;</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="aa72731c9cdcf23d92976e16ecdb0e750"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const char * ArServerHandlerCommMonitor::GET_HEARTBEAT_INTERVAL_PACKET_NAME = &quot;getHeartbeatInterval&quot;</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Name of the network packet to get the heartbeat interval. </p>

</div>
</div>
<a class="anchor" id="aeaef0a920c0ef6cac30f3b3cb12ee031"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const char * ArServerHandlerCommMonitor::HEARTBEAT_TCP_PACKET_NAME = &quot;heartbeatTcp&quot;</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Name of the network packet broadcast (TCP) to confirm the server is alive. </p>

<p>Referenced by <a class="el" href="classArServerHandlerCommMonitor.html#a43e31a53641f6f94f99cf52e6abbe709">cycleCallback()</a>.</p>

</div>
</div>
<a class="anchor" id="a6948e2803dcdc4041018fc5569694003"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const char * ArServerHandlerCommMonitor::HEARTBEAT_UDP_PACKET_NAME = &quot;heartbeatUdp&quot;</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Name of the network packet broadcast (UDP) to confirm the server is alive. </p>

<p>Referenced by <a class="el" href="classArServerHandlerCommMonitor.html#a43e31a53641f6f94f99cf52e6abbe709">cycleCallback()</a>.</p>

</div>
</div>
<a class="anchor" id="a6beff4bcf7780db743bd5020b2c1b013"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArFunctor2C.html">ArFunctor2C</a>&lt;<a class="el" href="classArServerHandlerCommMonitor.html">ArServerHandlerCommMonitor</a>, <a class="el" href="classArServerClient.html">ArServerClient</a> *, <a class="el" href="classArNetPacket.html">ArNetPacket</a> *&gt; ArServerHandlerCommMonitor::myAckCommTcpCB</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Callback for replying to the ack request (TCP) </p>

</div>
</div>
<a class="anchor" id="a46b8ce13306d01eed1dc2653f5dd8017"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArFunctor2C.html">ArFunctor2C</a>&lt;<a class="el" href="classArServerHandlerCommMonitor.html">ArServerHandlerCommMonitor</a>, <a class="el" href="classArServerClient.html">ArServerClient</a> *, <a class="el" href="classArNetPacket.html">ArNetPacket</a> *&gt; ArServerHandlerCommMonitor::myAckCommUdpCB</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Callback for replying to the ack request (UDP) </p>

</div>
</div>
<a class="anchor" id="a4029b7f7a9026e3f5b319aa7869e86a1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArFunctorC.html">ArFunctorC</a>&lt;<a class="el" href="classArServerHandlerCommMonitor.html">ArServerHandlerCommMonitor</a>&gt; ArServerHandlerCommMonitor::myCycleCB</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Cycle callback executed to broadcast the heartbeat packets. </p>

</div>
</div>
<a class="anchor" id="afb3801b68504caec991fc981970844c8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArFunctor2C.html">ArFunctor2C</a>&lt;<a class="el" href="classArServerHandlerCommMonitor.html">ArServerHandlerCommMonitor</a>, <a class="el" href="classArServerClient.html">ArServerClient</a> *, <a class="el" href="classArNetPacket.html">ArNetPacket</a> *&gt; ArServerHandlerCommMonitor::myGetHeartbeatIntervalCB</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Callback for getting the heartbeat interval. </p>

</div>
</div>
<a class="anchor" id="a240bd298bab57805609167225b25174c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ArServerHandlerCommMonitor::myHeartbeatInterval</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Number of msecs between heartbeat broadcasts. </p>

<p>Referenced by <a class="el" href="classArServerHandlerCommMonitor.html#a43e31a53641f6f94f99cf52e6abbe709">cycleCallback()</a>, and <a class="el" href="classArServerHandlerCommMonitor.html#a599f291d5f0dd0dc601fbbff48068d4a">handleGetHeartbeatInterval()</a>.</p>

</div>
</div>
<a class="anchor" id="adee9f703049b6d1c871baadedb28889e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="/home/reed/amrsw/Aria/docs/Aria.tag:../../docs/" href="../../docs/classArTime.html">ArTime</a> ArServerHandlerCommMonitor::myLastHeartbeatTime</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Time that the last heartbeat packets were broadcast. </p>

<p>Referenced by <a class="el" href="classArServerHandlerCommMonitor.html#a43e31a53641f6f94f99cf52e6abbe709">cycleCallback()</a>.</p>

</div>
</div>
<a class="anchor" id="a0478c31de1b026b3d6ee35a241b208f2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classArServerBase.html">ArServerBase</a>* ArServerHandlerCommMonitor::myServer</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Server from which requests are received. </p>

<p>Referenced by <a class="el" href="classArServerHandlerCommMonitor.html#a43e31a53641f6f94f99cf52e6abbe709">cycleCallback()</a>.</p>

</div>
</div>
<a class="anchor" id="a901056b011a577e34656d75cf5bfdd3e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const char * ArServerHandlerCommMonitor::NO_ARGS = &quot;None&quot;</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="ArServerHandlerCommMonitor_8h.html">ArServerHandlerCommMonitor.h</a></li>
<li><a class="el" href="ArServerHandlerCommMonitor_8cpp.html">ArServerHandlerCommMonitor.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classArServerHandlerCommMonitor.html">ArServerHandlerCommMonitor</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
